/*
 * Lemming.java
 *
 * Created on 2007. m�rcius 25., 14:59
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package lemmingsproto;

/**
 *
 * @author attila
 *
 * Egy lemminget reprezent�l� oszt�ly
 */
public class Lemming {
    private Tool lemmingTool;
    private int hasFallen;
    public Direction dir;
    private static int id_nav;
    private static int avaible;
    private int id;
    private boolean actionstate;
    
    /** Konstruktor */
    public Lemming() {
        actionstate=false;
        id_nav++;
        id=id_nav;
        System.out.println("lemming_init "+id);    	
        hasFallen=0;
        lemmingTool=new None(this);
        dir = new Direction(this);
    }
    /**
    * @return
    * A lemming eddigi zuhan�sa
    */
    public int getFallen() {
        return 0;
    }
    /**
    * A lemming zuhantat�s�ra �s f�ldh�z �rkeztet�s�re szolg�l� met�dus
    */
    public boolean ground() {
        if (hasFallen>3) {
        	// Kinyirjuk a kis kocsogot.
        	addTool(new GetStoned(this));
                this.nullActionFlag();
                return true;
        }
        // Azt nem tudjuk, hogy volt-e rajta ernyo...
        System.out.println("lemming_ground "+id+" "+hasFallen);
    	hasFallen=0;
    	return false;
    }
    /**
     * Tudatositja a lemmingben, hogy o bizony zuhan.
     * */
    public void fall(){
    	hasFallen++;
    }
    /**
    * Eszk�zt ad a lemmingnek
    * @return
    * TRUE ha sikeres volt a hozz�rendel�s, FALSE egy�bk�nt
    */
    public void addTool(Tool t) {
    	
        lemmingTool=t;

        lemmingTool.setLemming(this);

        return;
    }
    /**
     * A lemming akci� f�ggv�nye
     * @param whereIStand
     * A  mez� amelyiken a lemming �ll
     */
    public void action(Field whereIStand) {
        if (actionstate) return;
        actionstate=true;
        lemmingTool.action(whereIStand);
        return;
    }
    
    public void nullActionFlag()
    {
        actionstate=false;
        return;
    }
    
    public int getId(){
    	return id;
    }
    
     /**
     * Be�ll�tja, hogy az eszk�zb�l h�ny db. �ll rendelkez�sre
     * @param n
     * A rendelkez�sre �ll� eszk�z�k sz�ma
     */
    public static void setNum(int n) {
        avaible=n;
        return;
    }
    
     /**
     * @return
     * A rendelkez�sre �ll� eszk�z�k sz�ma
     */
    public static int getNum() {
        return avaible;
    }
    
}
